package com.impak.infoot.transport

import com.impak.infoot.domain.foot.Match

/**
 * Interface for the service MatchService transport layer
 * @author nzouabi
 *
 */
interface IMatchService {
	
	/**
	 * [MAT_1]
	 * This service returns a match given its Id
	 * @param matchId matchId
	 * @return Instance of <code>Match</code>
	 */
	Match getMatch(Long matchId)
	
	/**
	 * [MAT_2]
	 * This service returns the list of match of a season( planned and played )
	 * @param seasonId The season Id
	 * @return List of the match in a given season
	 */
	List<Match> getMatchsOfSeason(Long seasonId)
	
	/**
	 * [MAT_3]	
	 * This service returns the list of match of a season day( planned and played )
	 * @param dayId The season day Id
	 * @return List of the match in a given season day
	 */
	List<Match> getMatchsOfDay(Long dayId)
	
	/**
	 * [MAT_4]	
	 * This service returns the best match in the season selected by the site members
	 * @param seasonId The give season
	 * @return The selected <code>Match</code>
	 */
	Match getBestMatchOfSeason(Long seasonId)
	
	/**
	 * [MAT_5]	
	 * This service returns the best match in the season day selected by the site members
	 * @param dayId The give day
	 * @return The selected <code>Match</code>
	 */
	Match getBestMatchOfDay(Long dayId)
	
	/**
	 * [MAT_6]	
	 * This service returns the list of played matches between two dates 
	 * @param seasonId The given season
	 * @param dateA The Min date
	 * @param dateB The Max date
	 * @return List of <code>Match</code>
	 */
	List<Match> getMatchsBetweenTwoDates(Long seasonId, Calendar dateA, Calendar dateB)
	
	/**
	 * [MAT_7]	
	 * This service returns the list of played matches between two season days 
	 * @param dayA The first day
	 * @param dayB The second day
	 * @return List of <code>Match</code>
	 */
	List<Match> getMatchsBetweenTwoSeasonDays(Long dayA, Long dayB)

}
